home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 8206 / 8206.xpi / content / prefs.js < prev    next >
Text File  |  2010-02-02  |  6KB  |  281 lines

  1. var WiseStampPrefs = function() 
  2. {
  3.     var pub = {};
  4.     pub.PREFS = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.wisestamp.");
  5.     
  6.  
  7.     pub.getPrefType = function(pref_id)
  8.     {
  9.         var type = "";
  10.         
  11.         try
  12.         {
  13.             type = this.PREFS.getPrefType(pref_id);
  14.             
  15.         } catch (e)
  16.         {
  17.             return "";
  18.         }
  19.         
  20.         return type;
  21.     }
  22.     
  23.     pub.getPrefTypeStr = function(pref_id)
  24.     {
  25.         var type = this.getPrefType(pref_id);
  26.         
  27.         switch (type)
  28.         {
  29.             case this.PREFS.PREF_STRING:
  30.                 return "string";
  31.             
  32.             case this.PREFS.PREF_INT:
  33.                 return "int";
  34.             
  35.             case this.PREFS.PREF_BOOL:
  36.                 return "boolean";
  37.         }
  38.          
  39.         return "";
  40.     }
  41.     
  42.     pub.getPrefValue = function(pref_id)
  43.     {
  44.         var type = this.getPrefType(pref_id);
  45.         
  46.         switch (type)
  47.         {
  48.             case this.PREFS.PREF_STRING:
  49.                 return this.PREFS.getCharPref(pref_id);
  50.             
  51.             case this.PREFS.PREF_INT:
  52.                 return this.PREFS.getIntPref(pref_id);
  53.             
  54.             case this.PREFS.PREF_BOOL:
  55.                 return this.PREFS.getBoolPref(pref_id);
  56.         }
  57.          
  58.         return "";
  59.     }
  60.     
  61.     pub.setPrefValue = function(pref_id,value,type)
  62.     {
  63.         if (type == null)
  64.             type = this.getPrefType(pref_id);
  65.         
  66.         switch (type)
  67.         {
  68.             case "string":
  69.             case this.PREFS.PREF_STRING:
  70.                 this.PREFS.setCharPref(pref_id,value);
  71.                 break;
  72.             
  73.             case "int":
  74.             case this.PREFS.PREF_INT:
  75.                 this.PREFS.setIntPref(pref_id,value);
  76.                 break;
  77.             
  78.             case "boolean":
  79.             case this.PREFS.PREF_BOOL:
  80.                 this.PREFS.setBoolPref(pref_id,value == "true" ? true : false);
  81.                 break;
  82.         }
  83.     }
  84.     
  85.     pub.clearBranch = function(prefix)
  86.     {        
  87.         /* remove preferences */
  88.         var list = this.PREFS.getChildList(prefix,{},{});
  89.         WiseStampUtils.log("prefs.js :: clearBranch :: clearing " + list.length + " elements under " + prefix);
  90.         
  91.         for (var i = 0; i < list.length; i++)
  92.         {
  93.             try
  94.             {
  95.                 this.PREFS.clearUserPref(list[i]);
  96.             
  97.             } catch(e){}
  98.         }
  99.     }
  100.         
  101.     pub.isModified = function(id)
  102.     {
  103.         return this.PREFS.prefHasUserValue(id);
  104.     }
  105.  
  106.  
  107.     ///////////////////////////////////////////////////////////////////////////
  108.     // PREFERENCES FUNCTIONS
  109.     // Note: id2 is usefull for backword compatibility. If id is not present id2 will be fetched
  110.  
  111.     pub.getBoolPref = function(id,default_val,id2)
  112.     {
  113.         var value = null;
  114.         
  115.         try {
  116.             value = pub.PREFS.getBoolPref(id);
  117.         
  118.         } catch (e) 
  119.         {
  120.             if (id2 != undefined)
  121.                 return this.getBoolPref(id2,default_val);
  122.                 
  123.             if (default_val == undefined)
  124.                 value = false;
  125.             else
  126.                 value = default_val;
  127.         }
  128.         
  129.         return value;
  130.     }
  131.     
  132.     pub.getIntPref = function(id,default_val,id2)
  133.     {
  134.         var value = null;
  135.         
  136.         try {
  137.             value = pub.PREFS.getIntPref(id);
  138.         
  139.         } catch (e) 
  140.         {
  141.             if (id2 != undefined)
  142.                 return this.getIntPref(id2,default_val);
  143.                 
  144.             if (default_val == undefined)
  145.                 value = false;
  146.             else
  147.                 value = default_val;
  148.         }
  149.         
  150.         return value;
  151.     }
  152.     
  153.     pub.getCharPref = function(id,default_val,id2)
  154.     {
  155.         var value = null;
  156.         
  157.         try {
  158.             value = pub.PREFS.getCharPref(id);
  159.         
  160.         } catch (e) 
  161.         {
  162.             if (id2 != undefined)
  163.                 return this.getCharPref(id2,default_val);
  164.                 
  165.             if (default_val == undefined)
  166.                 value = "";
  167.             else
  168.                 value = default_val;
  169.         }
  170.         
  171.         return value;
  172.     }
  173.     
  174.     pub.getComplexPref = function(id,default_val,id2)
  175.     {
  176.         var value = null;
  177.         
  178.         try {
  179.             value = pub.PREFS.getComplexValue(id, Components.interfaces.nsISupportsString).data;
  180.         
  181.         } catch (e) 
  182.         {
  183.             if (id2 != undefined)
  184.                 return this.getComplexPref(id2,default_val);
  185.                 
  186.             if (default_val == undefined)
  187.                 value = "";
  188.             else
  189.                 value = default_val;
  190.         }
  191.         
  192.         return value;
  193.     }
  194.     
  195.     pub.setComplexPref = function(id,value)
  196.     {
  197.         var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  198.         str.data = value;
  199.         this.PREFS.setComplexValue(id, Components.interfaces.nsISupportsString, str);
  200.     }
  201.     
  202.     ///////////////////////////////////////////////////////////////////////////
  203.     
  204.     pub.export = function(file)
  205.     {        
  206.         // file is nsIFile, data is a string
  207.         var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
  208.         
  209.         // use 0x02 | 0x10 to open file for appending.
  210.         foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); 
  211.  
  212.         // if you are sure there will never ever be any non-ascii text in data you can 
  213.         // also call foStream.writeData directly
  214.         var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream);
  215.         converter.init(foStream, "UTF-8", 0, 0);
  216.  
  217.         var list = this.PREFS.getChildList("",{},{});
  218.         for (var i = 0; i < list.length; i++)
  219.         {
  220.             try
  221.             {
  222.                 var name = list[i];
  223.                 
  224.                 var value = this.getPrefValue(name);
  225.                 var type = this.getPrefTypeStr(name);
  226.                 
  227.                 converter.writeString(name + '\r\n');
  228.                 converter.writeString(type + '\r\n');
  229.                 converter.writeString(value + '\r\n');
  230.                 converter.writeString('---\r\n');
  231.                 
  232.             } catch(e)
  233.             {
  234.                 WiseStampUtils.log("prefs.js :: export :: exception caught = " + e);
  235.             }
  236.         }
  237.         
  238.         converter.close(); // this closes foStream
  239.     }
  240.  
  241.     pub.import = function(file)
  242.     {
  243.         var fis = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
  244.         fis.init(file, -1, -1, 0);
  245.         
  246.         var charset = "UTF-8";
  247.         var is = Components.classes["@mozilla.org/intl/converter-input-stream;1"].createInstance(Components.interfaces.nsIConverterInputStream);
  248.     
  249.         // This assumes that fis is the nsIInputStream you want to read from
  250.         is.init(fis, charset, 1024, 0xFFFD);
  251.         var lis = is.QueryInterface(Components.interfaces.nsIUnicharLineInputStream);
  252.     
  253.         if (lis instanceof Components.interfaces.nsIUnicharLineInputStream) 
  254.         {
  255.               var name = {}, type = {}, line = {};
  256.             
  257.             do 
  258.             {
  259.                 cont = lis.readLine(name);
  260.                 cont = lis.readLine(type);
  261.                 
  262.                 var value = "";
  263.                 while (1) 
  264.                 {
  265.                     cont = lis.readLine(line);
  266.                     if (cont == false || line.value == '---')
  267.                         break;
  268.                     
  269.                     value += line.value;
  270.                 }
  271.                     
  272.                 WiseStampUtils.log("prefs.js :: import :: name = "+name.value+", type = "+type.value+", value = "+value);
  273.                     
  274.                 this.setPrefValue(name.value,value,type.value);
  275.               } while (cont);
  276.         } else
  277.             alert("sorry!");
  278.     }
  279.                 
  280.     return pub;
  281. } ();